/**
 * Project Name:zyhj-admin
 * File Name:HzfglServiceImpl.java
 * Package Name:com.vviton.zyhj.admin.service.impl
 * Date:2016年11月22日下午12:40:57
 *
 */

package com.vviton.zyhj.admin.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.vviton.zyhj.admin.service.HzfglService;
import com.vviton.zyhj.common.base.BaseService;
import com.vviton.zyhj.common.common.CodeConstants;
import com.vviton.zyhj.common.common.CommonConstants;
import com.vviton.zyhj.common.common.ValidatorConstants;
import com.vviton.zyhj.common.dao.TYyxtHzglHzgxbMapper;
import com.vviton.zyhj.common.entity.TYyxtCode;
import com.vviton.zyhj.common.entity.TYyxtHzglHzgxb;
import com.vviton.zyhj.common.utils.ErrorBean;
import com.vviton.zyhj.common.utils.ResultJson;
import com.vviton.zyhj.common.utils.page.Page;
import com.vviton.zyhj.common.view.ParamHzfUpdate;
import com.vviton.zyhj.common.view.ParamHzfcx;
import com.vviton.zyhj.common.view.ViewHzfcx;

/**
 * ClassName:HzfglServiceImpl <br/>
 * Function: 合作方管理service. <br/>
 * Date: 2016年11月22日 下午12:40:57 <br/>
 * 
 * @author tangli
 * @version
 * @since JDK 1.7
 * @see
 */
public class HzfglServiceImpl extends BaseService implements HzfglService {
    /** 日志 */
    private static Logger logger = Logger.getLogger(HzfglServiceImpl.class);
    /** 合作方关系Mapper */
    @Autowired
    private TYyxtHzglHzgxbMapper tYyxtHzglHzgxbMapper;

    /**
     * 
     * gethzfcxpagination,合作方信息分页查询. <br/>
     * Author: tangli <br/>
     * Create Date: 2016年11月22日 <br/>
     * =============================================================== <br/>
     * Modifier: tangli <br/>
     * Modify Date: 2016年11月22日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     * 
     * @param param 合作方请求参数
     * @return Page
     * @since JDK 1.7
     */

    @Override
    public Page getHzfcxPagination(ParamHzfcx param) {

        Page page = new Page();
        page.setCurrPage(param.getCurrPage());
        page.setPageSize(param.getPageSize());
        page.setParam(param);
        return hzfcx(page);

    }

    /**
     * 
     * hzfcx,合作方信息分页查询处理。 <br/>
     * Author: tangli <br/>
     * Create Date: 2016年11月22日 <br/>
     * ===============================================================<br/>
     * Modifier: tangli <br/>
     * Modify Date: 2016年11月22日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     * 
     * @param page 请求参数
     * @return Page
     * @since JDK 1.7
     */

    private Page hzfcx(Page page) {
        logger.info("合作方信息分页查询begin");
        int count = tYyxtHzglHzgxbMapper.countHzfxxPagination(page);
        page.setTotal(count);
        List<ViewHzfcx> hzfList = new ArrayList<ViewHzfcx>();
        if (count > 0) {
            hzfList = tYyxtHzglHzgxbMapper.getHzfxxpagination(page);
            Map<String, TYyxtCode> xyztMap = this.getCodeMapCodeclass(CodeConstants.XYZT);
            for (ViewHzfcx viewHzfcx : hzfList) {
                String code = viewHzfcx.getXyzt();
                TYyxtCode tYyxtCode = xyztMap.get(CodeConstants.XYZT + code);
                if (tYyxtCode != null) {
                    String desc = tYyxtCode.getCodedesc();
                    viewHzfcx.setXyztDesc(desc);
                }
            }
            page.setData(hzfList);
        }
        logger.info("合作方信息分页查询end");
        return page;
    }

    /**
     * 
     * getHzfDshPagination,合作方待审核分页查询. <br/>
     * Author: tangli <br/>
     * Create Date: 2016年11月22日 <br/>
     * =============================================================== <br/>
     * Modifier: tangli <br/>
     * Modify Date: 2016年11月22日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     * 
     * @param param 请求参数
     * @return Page
     * @since JDK 1.7
     */
    @Override
    public Page getHzfDshPagination(ParamHzfcx param) {
        Page page = new Page();
        page.setCurrPage(param.getCurrPage());
        page.setPageSize(param.getPageSize());
        param.setXyzt(CodeConstants.XYZT_DSH);
        page.setParam(param);
        return hzfcx(page);
    }

    /**
     * 
     * updateHzfXyzt,合作方协议更新审核状态. <br/>
     * Author: tangli <br/>
     * Create Date: 2016年11月23日 <br/>
     * =============================================================== <br/>
     * Modifier: tangli <br/>
     * Modify Date: 2016年11月23日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     * 
     * @param paramHzfUpdate 请求参数
     * @return ResultJson
     * @since JDK 1.7
     */
    @Override
    public ResultJson updateHzfXyzt(ParamHzfUpdate paramHzfUpdate) {
        logger.info("合作方协议更新审核状态begin");
        ResultJson resultJson = new ResultJson(false);
        List<ErrorBean> errorList = new ArrayList<ErrorBean>();
        TYyxtHzglHzgxb tyyxtHzglHzgxb = tYyxtHzglHzgxbMapper.getHzgxbShzt(paramHzfUpdate);
        if (tyyxtHzglHzgxb == null || tyyxtHzglHzgxb.getId() == null) {
            ErrorBean errorBean = new ErrorBean();
            errorBean.setErrorData(ValidatorConstants.E20002);
            errorList.add(errorBean);
            resultJson.setErrorList(errorList);
            return resultJson;
        }
        paramHzfUpdate.setXyzt(CodeConstants.XYZT_YSH);
        paramHzfUpdate.setVersions(this.getVersion());
        paramHzfUpdate.setSpsj(new Date());
        paramHzfUpdate.setDelflag(CommonConstants.DELFLAG_UPDATE);
        //审批人帐号
        paramHzfUpdate.setOperatercode(paramHzfUpdate.getSprid());
        paramHzfUpdate.setOperatetime(new Date());
        int result = tYyxtHzglHzgxbMapper.updateHzfXyzt(paramHzfUpdate);
        logger.info("合作方信息分页查询end");
        if (result == 1) {
            resultJson.setResult(true);
        }
        return resultJson;

    }
}
